/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.di0.sql;

import java.sql.*;

/**
 *
 * @author di0
 */
public class ConexaoPostgres {

    private static Connection con = null;

    /**
     * Cria uma nova conexão com o PostgreSQL
     * @return a conexão estabelecida
     */
    public Connection setConexao() {
        try //A captura de exceções SQLException em Java é obrigatória para usarmos JDBC.
        {
            // Este é um dos meios para registrar um driver
            Class.forName("org.postgresql.Driver");

            // Registrado o driver, vamos estabelecer uma conexão
            //DriverManager.getConnection("jdbc:postgresql://HOST_POSTGRES:PORTA/BASE", "LOGIN", "SENHA");
            con = DriverManager.getConnection(
                    "jdbc:postgresql://localhost:5432/NyxDB", "postgres", "postgres");

        } catch (SQLException e) {

            // se houve algum erro, uma exceção é gerada para informar o erro
            e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return con;
    }

    /**
     * Finaliza a conexão com o PostgreSQL
     */
    public void finalizaConexao() {
        try { //fechar conexão com o banco
            con.close();
        } catch (SQLException onConClose) {
            System.out.println("Houve erro no fechamento da conexão");
            onConClose.printStackTrace();
        }
    }

    public ConexaoPostgres() {
    }

    public static void main(String args[]) {
        try {

            // Este é um dos meios para registrar um driver
            Class.forName("org.postgresql.Driver");

            // Registrado o driver, vamos estabelecer uma conexão
            //DriverManager.getConnection("jdbc:postgresql://HOST_POSTGRES:PORTA/BASE", "LOGIN", "SENHA");
            con = DriverManager.getConnection(
                    "jdbc:postgresql://localhost:5432/NyxDB", "postgres", "postgres");
            //selectTabela("Select * from \"Usuarios\"");
        } catch (SQLException e) {
            // se houve algum erro, uma exceção é gerada para informar o erro
            e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                con.close();
            } catch (SQLException onConClose) {
                System.out.println("Houve erro no fechamento da conexão");
                onConClose.printStackTrace();
            }
        }
    }

    private static void selectTabela(String query) {
        try {
            // Após estabelecermos a conexão com o banco de dados
            // Utilizamos o método createStatement de con para criar o Statement
            Statement stm = con.createStatement();

            // Definido o Statement, executamos a query no banco de dados
            ResultSet rs = stm.executeQuery(query);

            // O método next() informa se houve resultados e posiciona o cursor do banco
            // na próxima linha disponível para recuperação
            // Como esperamos várias linhas utilizamos um laço para recuperar os dados
            while (rs.next()) {
                // Os métodos getXXX recuperam os dados de acordo com o tipo SQL do dado:
                String tit = rs.getString("id_usuario");
                String aut = rs.getString("login");
                String totalFaixas = rs.getString("senha");

                // As variáveis tit, aut e totalFaixas contém os valores retornados
                // pela query. Vamos imprimí-los

                System.out.println("idUsuario: " + tit + "\nLogin: " + aut + "\nSenha: " + totalFaixas);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * @return A conexão
     */
    public Connection getConexao() {
        return con;
    }
}
